package com.common.ui.adapter;

import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;

/**
 * 知识点:
 * 1:FragmentStatePagerAdapter与FragmentPagerAdapter全部继承自PagerAdapter
 * 2:FragmentStatePagerAdapter与FragmentPagerAdapter全部继承自PagerAdapter生成的Fragment都将保存在内存中，
 *   所以缺点非常明显，对于存在相对较多的fragment，程序将会吃掉非常多的内存，FragmentPagerAdapter适合那些相数量相对较少的
 *   静态的页面。对于存在多个fragment的情况，一般推荐使用FragmentStatePagerAdapter
 * 3:
 *
 *
 */

public class BriupFragmentPagerAdapter extends FragmentPagerAdapter {

    public BriupFragmentPagerAdapter(@NonNull FragmentManager fm) {
        super(fm);
    }

    /**
     * 生成我们需要的fragment，交给相关联的Activity
     *  Fragment fragment = new Fragment();
     *  Bundle bundle = new Bundle();
     *  bundle.putString("position", "" + position);
     *  fragment.setArguments(bundle);
     * @param position
     * @return
     */
    @NonNull
    @Override
    public Fragment getItem(int position) {
        return null;
    }

    @Override
    public int getCount() {
        return 0;
    }

    /**
     * 该方法被调用后，会对Fragment进行FragmentTransaction.detach(),
     * 它并不是remove，而是detach[解除附着]了，因此fragment依旧在FragmentManager的管理中，Fragment依旧会占有资源。
     * @param container
     * @param position
     * @param object
     */
    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        super.destroyItem(container, position, object);
    }
}
